package java_learn.java_jinjie.IO;

import java.io.File;

/**
 * File类获取功能的方法
 * - public String getAbsolutePath() ：返回此File的绝对路径名字符串。
 * - public String getPath() ：将此File转换为路径名字符串。
 * - public String getName()  ：返回由此File表示的文件或目录的名称。
 * - public long length()  ：返回由此File表示的文件的长度。
 *
 * @Author: 李浩然
 * @Date: 2020/12/27 3:32 下午
 */
public class Demo03File {
    public static void main(String[] args) {
//        show01();
//        show02();
//        show03();
        show04();
    }

    /**
     * public long length()  ：返回由此File表示的文件的长度。
     * 获取的是构造方法指定的文件的大小,以字节为单位
     * 注意:
     * 文件夹是没有大小概念的,不能获取文件夹的大小
     * 如果构造方法中给出的路径不存在,那么length方法返回0
     */
    private static void show04() {
        File f1 = new File("/Users/lihaoran/Desktop/project/IdeaProjects/java-blockchain/java_learn/src/main/java/java_learn/java_jinjie/IO/a.txt");
        System.out.println(f1.getName());
        System.out.println(f1.length());
    }

    /**
     * public String getName()  ：返回由此File表示的文件或目录的名称。
     * 获取的就是构造方法传递路径的结尾部分(文件/文件夹)
     */
    private static void show03() {
        File f1 = new File("/Users/lihaoran/Desktop/project/IdeaProjects/java-blockchain/java_learn/src/main/java/java_learn/java_jinjie/IO");
        System.out.println(f1.getName());

        File f2 = new File("a.txt");
        System.out.println(f2.getName());
    }

    /**
     * public String getPath() ：将此File转换为路径名字符串。
     * 获取的构造方法中传递的路径
     * <p>
     * toString方法调用的就是getPath方法
     * 源码:
     * public String toString() {
     * return getPath();
     * }
     */
    private static void show02() {
        File f1 = new File("/Users/lihaoran/Desktop/project/IdeaProjects/java-blockchain/java_learn/src/main/java/java_learn/java_jinjie/IO");
        System.out.println(f1.getAbsolutePath());

        File f2 = new File("a.txt");
        System.out.println(f2.getPath());

        System.out.println(f2.toString());
    }

    /**
     * public String getAbsolutePath() ：返回此File的绝对路径名字符串。
     * 获取的构造方法中传递的路径
     * 无论路径是绝对的还是相对的,getAbsolutePath方法返回的都是绝对路径
     */
    private static void show01() {
        File f1 = new File("/Users/lihaoran/Desktop/project/IdeaProjects/java-blockchain/java_learn/src/main/java/java_learn/java_jinjie/IO");
        System.out.println(f1.getAbsolutePath());

        File f2 = new File("a.txt");
        System.out.println(f2.getAbsolutePath());
    }
}
